/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import javax.swing.JOptionPane;
import model.*;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;

/**
 *
 * @author JONATAS
 */
public class ImagemDoProjetoDAO {

    private Session session;
    
    // método construtor - igual ao nome da Material precedido por public

    public ImagemDoProjetoDAO() {
        session = HibernateUtil.getSessionFactory().openSession();
    }

    public void insert(ImagemDoProjeto m) {
        
    try{
        Transaction t = session.beginTransaction();
        session.save(m);        
        t.commit();
        } catch (org.hibernate.exception.ConstraintViolationException ex){
            System.out.println("Registro já existe");
        }
    
    }
    public void merge(ImagemDoProjeto m) {
        
    try{
        Transaction t = session.beginTransaction();
            Object merge = session.merge(m);
            
            System.out.println("MEREG out - "+merge.toString());            
        t.commit();
        } catch (org.hibernate.exception.ConstraintViolationException ex){
            System.out.println("Registro já existe");
        }
    
    }

    public void update(ImagemDoProjeto m) {
        Transaction t = session.beginTransaction();
        session.merge(m);
        t.commit();
    }

    public void delete(ImagemDoProjeto m) {
        Transaction t = session.beginTransaction();
        session.delete(m);
        t.commit();
        session.close();
    }

    public ImagemDoProjeto findById(int id) {
        return (ImagemDoProjeto) session.load(ImagemDoProjeto.class, id);
    }
    

    /*public MaterialDoProduto findByIdComposta(MaterialId id) {

        Query q = session.createQuery("from MaterialDoProduto where mat_id = :id");

        q.setParameter("id", id);

        return (MaterialDoProduto) q.uniqueResult();
    }*/
    public List<ImagemDoProjeto> findImagensDoProjeto(Projeto id) {

        Query q = session.createQuery("from ImagemDoProjeto where projeto = :id");

        q.setParameter("id", id);

        return q.list();
    }
    
    public void deleteImagensDoProjeto(Projeto id) {
        
        Transaction t = session.beginTransaction();
        Query q = session.createQuery("delete from ImagemDoProjeto where projeto = :id");
        q.setParameter("id", id);
        int rowCount = q.executeUpdate();
        System.out.println("DELETE FROM !!!!! Afetadas -> "+rowCount);
        t.commit();
        
    }
    public List<Material> findAll() {
        return session.createCriteria(Material.class).list(); // faz um select * from marca
    }

    public void Commit() {
        Transaction t = session.beginTransaction();
        t.commit();
    }
}
